﻿// Copyright 2013 Ronald Schlenker, www.technewlogic.de.
// 
// This file is part of Byond.
// 
// Byond is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 2 of the License, or
// (at your option) any later version.
// 
// Byond is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
// 
// You should have received a copy of the GNU General Public License
// along with Byond.  If not, see <http://www.gnu.org/licenses/>.

using System.Linq;
using System.Windows;
using System.Windows.Input;
using Byond.UIRuntime;
using Utils.Documentation;

namespace Byond.PatchUiControls
{
	[Doc]
	public class TextBox : UiControl
	{
		static TextBox()
		{
			DefaultStyleKeyProperty.OverrideMetadata(
				typeof(TextBox),
				new FrameworkPropertyMetadata(typeof(TextBox)));
		}

		#region Text DP

		public string Text
		{
			get { return (string)GetValue(TextProperty); }
			set { SetValue(TextProperty, value); }
		}

		// Using a DependencyProperty as the backing store for Text.  This enables animation, styling, binding, etc...
		public static readonly DependencyProperty TextProperty =
			DependencyProperty.Register("Text", typeof(string), typeof(TextBox), new UIPropertyMetadata(string.Empty));

		#endregion

		public override void OnApplyTemplate()
		{
			base.OnApplyTemplate();

			var innerTextBox = Template.FindName("PART_InnerTextBox", this) as System.Windows.Controls.TextBox;
			innerTextBox.KeyDown += (s, e) =>
				{
					if (e.Key == Key.Enter)
						innerTextBox.MoveFocus(new TraversalRequest(FocusNavigationDirection.Up));
				};
			innerTextBox.GotKeyboardFocus += (s, e) =>
				{
					innerTextBox.CaretIndex = innerTextBox.Text.Length;
				};
		}
	}
}
